package com.swlz.service;

import java.util.List;

import com.swlz.dto.UserFormDTO;
import com.swlz.dto.UserSearch;
import com.swlz.entity.User;
import com.swlz.exception.CodeException;
import com.swlz.vo.LoginUser;
import com.swlz.vo.PageVO;
import com.swlz.vo.UserVO;

/**<pre>
 * - 
 * ClassName : com.swlz.service.UserService
 * Author : swlz
 * E-Mail : 2233875735@qq.com
 * Date : 2020年7月25日 上午10:40:21
 * Version : 1.0
 * Copyright 2020 swlz.top Inc. All rights reserved. 
 * Warning: this content is only for internal circulation of the company. 
 * It is forbidden to divulge it or use it for other commercial purposes.
 * </pre>
 **/
public interface UserService {

	/**
	 * 返回最新注册的用户
	 * @param len 返回的最大数量
	 * @return
	 */
	List<User> list(int len);
	
	/**
	 * 
	 * @param current 当前页码
	 * @param rowMax 每页最大行数 
	 * @return
	 */
	List<User> list(int current,int rowMax);
	
	

	PageVO<UserVO> page(UserSearch search);
	
	int delete(Long userId);
	
	
	/**
	 * 用户注册的特殊性
	 *  - 普通： 获取参数(对重要属性进行校验) -> 调用Service的add -> 完成
	 *  1. 对重要属性进行校验
	 *  2. 字段的唯一性校验
	 *  3. 密码的（加盐）加密
	 * @param user
	 * @return
	 */
	int add(UserFormDTO user);
	
	/**
	 * 判断用户名是否存在
	 * @param userName
	 * @return
	 */
	boolean existsUserName(String userName);
	
	/**
	 * 获取一条用户完整的信息
	 * @param userId
	 * @return
	 */
	User get(Long userId);
	
	int update(User user);
	
	
	/**
	 * 
	 * @param userName
	 * @param userPwd
	 * @return
	 * @throws CodeException 1:用户名不存在，2:密码错误，3:用户被锁定
	 */
	LoginUser login(String userName,String userPwd)throws CodeException;
}
